package com.rd.student.jiaji.class4.suyan.zrrd.day09;

public class FinalTeat {
    //final  String  str="hello world";
    //定义成员变量是需要初始化
    //可以直接初始化赋值
    //也可以在初始化中赋值
    final String str;
    {
        str="hello world";
    }
    //如果final修饰静态变量，可以直接赋值（初始化）
    //也可以在静态初始化中赋值
    final static String staStr1;
    static {
        staStr1="hello";
    }
    final int a;
    public FinalTeat(){
        a=10;
    }
    //在构造器中赋值（初始化）
    public static void main(String[] args) {
        FinalTeat finalTeat=new FinalTeat();
        System.out.println(FinalTeat.staStr1);
        System.out.println(finalTeat.str);
       System.out.println(finalTeat.a);
        final int c=0;
        System.out.println(c);
        finalTeat.test(10);
        finalTeat.test1(20);
        System.out.println(FinalTeat.NUM_CNT);

    }



    //被final修饰的变量，没有默认值
    //因为是不可被更改的，所以需要手动设置初始值，也是最终值
    public void test(final int num){
        //num是final的局部变量
        //它能被final修饰
        //num=10;
    }
    public void test1(int num){
        //num是final的局部变量
        //它能被final修饰
        num=10;

    }
    //常量 往往用大写
    //包名，类名，方法名，变量名
    public static  final String NUM_CNT="num";
    //代表变量是唯一的 不可修改的 此时是常量

}
